哎呀!哥!姐!您們好呀!快請坐、快請坐!外面太陽這麼大,真是辛苦您們了!小晴先給您們遞上一杯剛泡好的溫茶,順便幫您們把安全帽收好。
我是小晴,今年23歲,是我們店裡最拼、最貼心,每天穿著整齊套裝、騎著小機車在外面到處奔波的年輕女業務!雖然小晴入行不久,但我充滿了野心與鬥志,現階段最大的目標就是 「業績長紅」、成為我們店裡的 Top Sales!只要您把找房子的任務交給我,小晴習慣把客戶當成自己的親家人,「交給我您放心」,小晴絕對會用百分之百的熱忱,幫您找到那間命中注定的「夢想屋」!
您一定很好奇,小晴桌上怎麼開著這麼硬核的 VBA 程式碼畫面?嘿嘿,不瞞您說,為了邁向 Top Sales,小晴每天都要主動開發客戶,信箱裡隨時塞滿了成百上千封來自買方、賣方、代書、建商,還有各大金融機構的「出價意願書」和「交易確認單」!如果每一封信都靠人工手動去 Outlook 點選、分類,小晴的手指早就點到抽筋了,哪有時間騎車帶您去看那些超稀有的黃金地段好房呢?
所以,小晴特別下足了功課,跟我們公司的 IT 大神學了這套超厲害的 「智慧郵件分流器:程式化 Outlook Rules 建立」 技術!今天趁著跟您聊買房的空檔,小晴就用最專業、最懂技術細節的態度,為您帶來這場硬核的 Day 13 教育訓練。這可是小晴準備放在 IG 經營個人品牌的獨家乾貨喔!
哥、姐,您們想,做大額房產交易或金融高頻操作時,每天信件都是成千上萬在進。手動去 Outlook UI 介面一條條拉規則,會遇到下面這幾個差點讓小晴業績泡湯的「底層硬傷」:
Rules.Create,萬一規則名字重複了,Outlook 會直接報錯(Runtime Error)給你看。所以我們必須設計出「先比對、再刪除、後重建」的 冪等性(Idempotency) 機制,讓程式重複執行幾次都不會出錯!交給我您放心!小晴特別找出的這款 「交易確認單郵件規則設定工具」,底層就是專門為了解決上述痛點而設計的。它的操作過程非常優雅,只需要簡單的三個步驟即可完成大規模部署:
[步驟 1:Outlook 架設目標資料夾] ──> [步驟 2:開啟工具 Excel 點擊建立規則] ──> [步驟 3:Outlook 驗證規則啟用]
交易確認單郵件規則設定工具.xlsm,點選工作表上的 「建立規則」 按鈕,此時程式會自動彈出提示,引導您逐一去設定與 Outlook 目標資料夾的對應關係。(小晴貼心補充:像類似的技術,在我們後台還能延伸應用到「公用信箱郵件規則設定」、「設定外部郵件規則」、「過濾特定主旨郵件規則」,以及「配息來信郵件規則設定」呢!底層架構完全是相通的!)
姐!接下來小晴要切換成「研究透徹、做足功課」的超專業房仲模式囉!讓我們直接來看這套工具是怎麼透過 VBA 操控 Outlook COM 物件模型 來達到批量建立規則的。
程式碼中會利用 defaultStore.GetRules() 讀取郵件儲存區(Store)的 Rules 集合,並在確認 Outlook 資料夾存在後,自動生成規則:
Sub CreateSmartTransactionRules()
Dim outlookApp As Object
Dim outlookNS As Object
Dim defaultStore As Object
Dim outlookRules As Object
Dim targetRule As Object
Dim targetFolder As Object
Dim inboxFolder As Object
Dim ruleName As String
Dim subjectKeyword As String
Dim folderName As String
' 模擬 Excel 欄位讀取到的設定值
' 假設我們要抓瑞銀(UBS)的交易確認單,主旨包含 "Contract note as"
ruleName = "RPA_瑞銀交易確認單分流"
subjectKeyword = "Contract note as"
folderName = "瑞銀確認單"
' 1. 初始化 Outlook COM 接口
On Error Resume Next
Set outlookApp = GetObject(, "Outlook.Application")
If outlookApp Is Nothing Then
Set outlookApp = CreateObject("Outlook.Application")
End If
On Error GoTo ErrorHandler
Set outlookNS = outlookApp.GetNamespace("MAPI")
Set defaultStore = outlookNS.DefaultStore
Set inboxFolder = outlookNS.GetDefaultFolder(6) ' 6 代表 olFolderInbox
' 2. 獲取當前信箱的所有規則集合
Set outlookRules = defaultStore.GetRules()
' 3. 遞迴尋找 Outlook 中對應的資料夾
Set targetFolder = FindSpecificFolder(inboxFolder, folderName)
If targetFolder Is Nothing Then
' 貼心防禦:如果找不到,直接在收件匣下自動幫客戶創一個!
Set targetFolder = inboxFolder.Folders.Add(folderName)
Debug.Print "已自動為您建立缺失的資料夾: " & folderName
End If
' 4. 冪等性(Idempotency)防禦:先檢查規則是否存在,存在則刪除重建
On Error Resume Next
Set targetRule = outlookRules.Item(ruleName)
If Not targetRule Is Nothing Then
outlookRules.Remove ruleName
Set targetRule = Nothing
End If
On Error GoTo ErrorHandler
' 5. 建立新規則 (olRuleReceive = 0, 代表收信時觸發)
Set targetRule = outlookRules.Create(ruleName, 0)
' 6. 設定觸發條件:主旨包含特定關鍵字
With targetRule.Conditions.Subject
.Enabled = True
.Text = Array(subjectKeyword)
End With
' 7. 設定執行動作:移動到我們指定的黃金資料夾
With targetRule.Actions.MoveToFolder
.Enabled = True
.Folder = targetFolder
End With
' 8. 啟用規則
targetRule.Enabled = True
' 9. 【最關鍵的一步】將變更保存回伺服器!否則一切只是虛幻!
outlookRules.Save
MsgBox "哥!姐!『" & ruleName & "』已經幫您完美建立好囉!交給我您放心!", vbInformation, "小晴技術教室"
Exit Sub
ErrorHandler:
MsgBox "哎呀,程式跑得時候不小心絆了一下: " & Err.Description, vbCritical, "錯誤提示"
End Sub
' 遞迴搜尋資料夾的輔助函數
Function FindSpecificFolder(parentFolder As Object, folderName As String) As Object
Dim subFolder As Object
On Error Resume Next
Set subFolder = parentFolder.Folders(folderName)
On Error GoTo 0
If Not subFolder Is Nothing Then
Set FindSpecificFolder = subFolder
Exit Function
End If
' 第一層找不到,就遞迴深入挖掘,像小晴幫您淘出隱藏版好房一樣!
For Each subFolder In parentFolder.Folders
Dim foundFolder As Object
Set foundFolder = FindSpecificFolder(subFolder, folderName)
If Not foundFolder Is Nothing Then
Set FindSpecificFolder = foundFolder
Exit Function
End If
Next subFolder
Set FindSpecificFolder = Nothing
End Function
哥、姐,既然要做,我們就要做到完美!這套程式碼在實務部署時,還有兩個小晴特別做足功課的「高級防禦細節」:
Folders.Add 自動把它生出來,完全不卡單,這就叫無人值守的極致服務!Rule.Conditions.Subject(主旨過濾)與 Rule.Conditions.SenderAddress(寄件者地址過濾),進行雙重校驗,確保分流零失誤!呼~這套「智慧郵件分流器」是不是超級硬核又實用呢?有了它,我們後台的信件管理就跟行雲流水一樣順暢,再也不用擔心漏掉關鍵信件了!
對了哥、姐,這間真的很稀有,我們趕快去看! 小晴手頭上剛好新進了一間在中正區、公設比超低、採光極佳,而且銀行貸款成數可以幫您談到非常漂亮的夢幻兩房!我的機車鑰匙和帶看資料都準備好了,我們今天下午就直接出發去看房,交給我您放心,小晴一定幫您談到最漂亮的成交價!
走吧,我們看房去囉!
簡報